package br.com.sguc.sessionBean;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import br.com.sguc.entidade.Campeonato;
import br.com.sguc.entidade.Equipe;
import br.com.sguc.entidade.Jogador;
import br.com.sguc.entidade.Partida;
import br.com.sguc.interfaces.CampeonatoRemote;
@Stateless
public class CampeonatoSessionBean implements CampeonatoRemote {

	@PersistenceContext
	EntityManager entityManager;
	
	@Override
	public List<Campeonato> pesquisarCampeonato(Campeonato campeonato) {

		Query query;
		if(campeonato.getTipoCampeonato() == null){
			
//			query = entityManager.createQuery("from Campeonato c where c.nomeCampeonato like :nome and id_usuario = :usuario and status = :status" );
//			query = entityManager.createQuery("from Campeonato c where c.nomeCampeonato like :nome and id_usuario = :usuario" );
			query = entityManager.createQuery("from Campeonato c where c.nomeCampeonato like :nome" );
			query.setParameter("nome", "%" + campeonato.getNomeCampeonato() + "%");
//			query.setParameter("usuario", campeonato.getUsuarioOrganizador().getIdUsuario());
//			query.setParameter("status", "1");
			
		}
		else{
			
//			query = entityManager.createQuery("from Campeonato c where c.tipoCampeonato = :tipoCampeonato and c.nomeCampeonato like :nome and id_usuario = :usuario and status = :status");
//			query = entityManager.createQuery("from Campeonato c where c.tipoCampeonato = :tipoCampeonato and c.nomeCampeonato like :nome and id_usuario = :usuario");
			query = entityManager.createQuery("from Campeonato c where c.tipoCampeonato = :tipoCampeonato and c.nomeCampeonato like :nome");
			query.setParameter("tipoCampeonato", campeonato.getTipoCampeonato());
			query.setParameter("nome", "%" + campeonato.getNomeCampeonato() + "%");
//			query.setParameter("usuario", campeonato.getUsuarioOrganizador().getIdUsuario());
//			query.setParameter("status", "1");
		}
		
		
		
		List<Campeonato> campeonatos = query.getResultList();
		
		
		for (Campeonato campeonato2 : campeonatos) {
			System.out.println(campeonato2.getPartida().size());
		}
		
		
		return campeonatos;
	}

	@Override
	public void salvarCampeonato(Campeonato campeonato) {
			entityManager.persist(campeonato);
	}
	
	
	@Override
	public void atualizarCampeonato(Campeonato campeonato) {
			
		try {
			entityManager.merge(campeonato);
			
			if(campeonato.getStatus().equals("2")){
				
				for (Equipe equipe : campeonato.getEquipe()) {
					equipe.setCampeonato(null);
					entityManager.merge(equipe);
				}
			}
			
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

	@Override
	public Campeonato findById(Campeonato campeonato) {
		
		TypedQuery<Campeonato> query = entityManager.createQuery("select c1 from Campeonato c1 where id_campeonato = " + campeonato.getIdCampeonato(), Campeonato.class);
		
		Campeonato campeonato2 = query.getSingleResult();
		
		System.out.println(campeonato2.getPartida().size());
		
		return campeonato2;
	}
	

}
